package com.pond.pond.mapper;

import com.pond.pond.domain.PondOrder;
import com.pond.pond.domain.dto.OrderQueryRequest;
import com.pond.pond.domain.vo.OrderVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 订单Mapper接口
 */
public interface PondOrderMapper {
    
    /**
     * 查询订单列表（带关联信息）
     */
    List<OrderVO> selectOrderList(@Param("query") OrderQueryRequest query);
    
    /**
     * 根据ID查询订单详情（带关联信息）
     */
    OrderVO selectOrderVOById(@Param("id") Long id);
    
    /**
     * 根据ID查询订单
     */
    PondOrder selectOrderById(@Param("id") Long id);
    
    /**
     * 根据订单编号查询订单
     */
    PondOrder selectByOrderNo(@Param("orderNo") String orderNo);
    
    /**
     * 根据预约时间段ID查询订单
     */
    PondOrder selectByAppointmentSegmentId(@Param("appointmentSegmentId") Long appointmentSegmentId);
    
    /**
     * 根据订单编号前缀查询最大订单编号
     */
    String selectMaxOrderNoByPrefix(@Param("prefix") String prefix);
    
    /**
     * 检查订单编号是否存在（包括已删除的记录）
     */
    int checkOrderNoExists(@Param("orderNo") String orderNo);
    
    /**
     * 统计用户订单数量
     */
    int countByUserId(@Param("userId") Long userId);
    
    /**
     * 统计钓场订单数量
     */
    int countByDeptId(@Param("deptId") Long deptId);
    
    /**
     * 新增订单
     */
    int insertPondOrder(PondOrder order);
    
    /**
     * 修改订单
     */
    int updatePondOrder(PondOrder order);
    
    /**
     * 删除订单
     */
    int deletePondOrderById(Long id);
}